/********************************************************************************************
* BlueShoes Framework; This file is part of the php application framework.
* NOTE: This code is stripped (obfuscated). To get the clean documented code goto 
*       www.blueshoes.org and register for the free open source *DEVELOPER* version or 
*       buy the commercial version.
*       
*       In case you've already got the developer version, then this is one of the few 
*       packages/classes that is only available to *PAYING* customers.
*       To get it go to www.blueshoes.org and buy a commercial version.
* 
* @copyright www.blueshoes.org
* @author    sam blum <sam-at-blueshoes>
* @author    Andrej Arn <andrej-at-blueshoes>
*/
	if (!Bs_Objects) 
	{
		var Bs_Objects = [];
	};
	
	function Bs_Checkbox() 
	{
		this._id;
		this._tagId;
		this.checkboxName;
		this.value = 0;
		this.noPartly = false;
		this.disabled = false;

		this.setDisabled = function(b) 
		{
			if (typeof(b) == 'undefined') b = !this.disabled;
			this.disabled = b;
			this.drawInto(this._tagId);
		}

		this.guiNochange = false;
		this.caption;
		this.imgDir = Bs_Path+'/img/win2k/';
		this.imgWidth  = '20';
		this.imgHeight = '20';
		this.imgStyle = '';
		this.useMouseover = false;
		this.eventOnClick;
		this.eventOnChange;
		
		this._constructor = function() 
		{
			this._id = Bs_Objects.length;
			Bs_Objects[this._id] = this;
			this._tagId = "Bs_Checkbox_"+this._id+"_";
		}
		
		this.loadSkin = function(skinName) 
		{
			switch (skinName) 
			{
				case 'win2k':
					this.imgDir       = Bs_Path+'/img/win2k/';
					this.imgWidth     = '20';
					this.imgHeight    = '20';
					break;
				case 'osx':
					this.imgDir       = Bs_Path+'/img/osx/';
					this.imgWidth     = '14';
					this.imgHeight    = '16';
					break;
				case 'opera7':
					this.imgDir       = Bs_Path+'/img/opera7/';
					this.imgWidth     = '14';
					this.imgHeight    = '14';
					break;
				case 'bobby':
					this.imgDir       = Bs_Path+'/img/bobby/';
					this.imgWidth     = '11';
					this.imgHeight    = '11';
					this.imgStyle     = 'margin:3px; vertical-align:middle;';
					this.useMouseover = true;
					break;
				case 'yattacier3':
					this.imgDir       = Bs_Path+'/img/yattacier3/';
					this.imgWidth     = '13';
					this.imgHeight    = '13';
					break;
				case 'h2ogtk2':
					this.imgDir       = Bs_Path+'/img/h2ogtk2/';
					this.imgWidth     = '13';
					this.imgHeight    = '13';
					break;
				case 'aluminumalloyvolcanic':
					this.imgDir       = Bs_Path+'/img/aluminumalloyvolcanic/';
					this.imgWidth     = '14';
					this.imgHeight    = '16';
					break;
				case 'smoothstreak':
					this.imgDir       = Bs_Path+'/img/smoothstreak/';
					this.imgWidth     = '13';
					this.imgHeight    = '13';
					break;
				case 'ximian-industrial':
				case 'ximian_industrial':
					this.imgDir       = Bs_Path+'/img/ximian_industrial/';
					this.imgWidth     = '13';
					this.imgHeight    = '13';
					break;
				default:
					return false;
			}
			return true;
		}
		
		this.render = function(tagId) 
		{
			if (this.noPartly && (this.value == 1)) this.value = 2;
			if (!bs_isEmpty(tagId)) 
			{
				this._tagId = tagId;
			}
			var out  = new Array();
			var outI = 0;
			var img = '';
			img += (this.disabled) ? 'disabled' : 'enabled';
			img += '_' + this.value;
			if (!this.disabled) 
			{
				out[outI++] = '<span';
				if (!this.guiNochange) 
				{
					out[outI++] = ' onClick="Bs_Objects['+this._id+'].onClick(\'' + this._tagId + '\');"';
				}
				out[outI++] = ' style="cursor:hand;"';
				if (this.useMouseover && !this.guiNochange) 
				{
					out[outI++] = ' onMouseOver="Bs_Objects['+this._id+'].onMouseOver(\'' + this._tagId + '\');"';
					out[outI++] = ' onMouseOut="Bs_Objects['+this._id+'].onMouseOut(\'' + this._tagId + '\');"';
				}
				out[outI++] = '>';
			}
			out[outI++] = '<img id="' + this._tagId + 'icon" src="' + this.imgDir + img + '.gif" border="0" width="' + this.imgWidth + '" height="' + this.imgHeight + '"';
			if (!bs_isEmpty(this.imgStyle)) out[outI++] = ' style="' + this.imgStyle + '"';
			out[outI++] = '>';
			if (this.caption) 
			{
				out[outI++] = '&nbsp;' + this.caption;
			}
			if (!this.disabled) 
			{
				out[outI++] = '</span>';
			}
			if (!this.checkboxName) 
			{
				this.checkboxName = 'checkbox' + this._tagId;
			}
			out[outI++] = '<input value="' + this.value + '" type=checkbox name="' + this.checkboxName + '" id="' + this.checkboxName + '" style="display:none; visibility:hidden;"';
			if (this.value) out[outI++] = ' checked';out[outI++] = '>';
			return out.join('');
		}
		
		this.drawInto = function(tagId) 
		{
			if (!bs_isEmpty(tagId)) 
			{
				this._tagId = tagId;
			}
			document.getElementById(this._tagId).innerHTML = this.render(this._tagId);
		}
		
		this.draw = function(tagId) 
		{
			this.drawInto(tagId);
		}
		
		this.write = function() 
		{
			document.write(this.render(this._tagId));
		}
		
		this.convertField = function(fieldId) 
		{
			var fldElm = document.getElementById(fieldId);
			if (!fldElm) return false;
			this.checkboxName = fldElm.name;
			fldElm.outerHTML = this.render(this._tagId);
			return true;
		}
		
		this.onMouseOver = function() 
		{
			var img = document.getElementById(this._tagId + 'icon');
			if (!img.swapOver0) 
			{
				img.swapOver0 = new Image();
				img.swapOver0.src = this.imgDir + 'enabled_0_over.gif';
				img.swapOver1 = new Image();
				img.swapOver1.src = this.imgDir + 'enabled_1_over.gif';
				img.swapOver2 = new Image();
				img.swapOver2.src = this.imgDir + 'enabled_2_over.gif';
				img.swapOut0 = new Image();
				img.swapOut0.src = this.imgDir + 'enabled_0.gif';
				img.swapOut1 = new Image();
				img.swapOut1.src = this.imgDir + 'enabled_1.gif';
				img.swapOut2 = new Image();
				img.swapOut2.src = this.imgDir + 'enabled_2.gif';
			}
			img.src = img['swapOver' + this.value].src;
		}
		
		this.onMouseOut = function() 
		{
			var img = document.getElementById(this._tagId + 'icon');
			img.src = img['swapOut' + this.value].src;
		}
		
		this.onClick = function() 
		{
			switch (this.value) 
			{
				case 0:
					this.value = 2;
					break;
				case 1:
				case 2:
					this.value = 0;
					this.value = 0;
					break;
				default:
					this.value = 0;
			}
			this._updateHiddenField();
			this._updateIcon();
			if (this.eventOnClick)  this._fireEvent(this.eventOnClick);
			if (this.eventOnChange) this._fireEvent(this.eventOnChange);
		}
		
		this.setTo = function(value, cancelEventOnChange) 
		{
			this.value = value;
			this._updateHiddenField();
			this._updateIcon();
			if (!cancelEventOnChange) 
			{
				if (this.eventOnChange) this._fireEvent(this.eventOnChange);
			}
		}
		
		this.attachOnClick = function(globalFunctionName) 
		{
			this.eventOnClick = globalFunctionName;
		}
		
		this.attachOnChange = function(globalFunctionName) 
		{
			this.eventOnChange = globalFunctionName;
		}
		
		this._fireEvent = function(e) 
		{
			if (e) 
			{
				if (typeof(e) != 'array') 
				{
					e = new Array(e);
				}
				for (var i=0; i<e.length; i++) 
				{
					if (typeof(e[i]) == 'function') 
					{
						e[i](this);
					} 
					else if (typeof(e[i]) == 'string') 
					{
						eval(e[i]);
					}
				}
			}
		}
		
		this._updateIcon = function() 
		{
			var iconElm = document.getElementById(this._tagId + 'icon');
			if (iconElm != null) 
			{
				var img = '';
				img += (this.disabled) ? 'disabled' : 'enabled';
				img += '_' + this.value;
				iconElm.src = this.imgDir + img + '.gif';
			}
		}
		
		this._updateHiddenField = function() 
		{
			var elm = document.getElementById(this.checkboxName);
			elm.value = this.value;
			elm.checked = (this.value);
		}
		
		this._constructor();
	}